#ifndef MINQUEUE_H
#define MINQUEUE_H

#include "additional_structs_graph.h"

class MinQueue
{
public:
    MinQueue();
    MinQueue(const int* data, int n);
    void initWithData(const int* data, int n);
    virtual ~MinQueue();
    enum{
        Infinity=999999,
        Nill=-1
    };
    //void insertInQueue(int a); // should insert an element into the queue, but I think not in that life;)
    //extraction methods:
    int extract_min();
    void setMinExtr(int a);
    void setKnots(Knots* kn, int len);
    bool areThereMoreElements();
    void printContents();
protected:
    Knots* _Knots;
    int _nKnotsLength;
    int _nMinExtraction;
    void sort(); ///! Sorts _anData for normal functining
    int _nLength;
    int* _anData;
};


#endif // MINQUEUE_H
